//
//  NSDate+Exienion.m
//  weibo-OC
//
//  Created by diyuyma on 16/3/30.
//  Copyright © 2016年 zhangkaiyun. All rights reserved.
//

#import "NSDate+Exienion.h"

@implementation NSDate (Exienion)
//将字符串转换为 日期对象
- (NSDate *)sinaDate: (NSString *)dateString {
    //将字符串 转换成日期
    //实例化转换字符串的对象
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    //指定转换格式
    df.dateFormat = @"EEE MMM dd HH:mm:ss zzz yyyy";
    //将字符串转换为 日期 对象
    NSDate *date = [df dateFromString:dateString];
    
    return date;
}

/*
 刚刚(一分钟内)
 X分钟前(一小时内)
 X小时前(当天)
 -------------
 
 昨天 HH:mm(昨天)
 MM-dd HH:mm(一年内)
 yyyy-MM-dd HH:mm(更早期)
 
 处理比较复杂的时间的运算 可以 NSCalendar  提供非常丰富的时间处理函数
 
 */



// 将日期转换描述字符串
- (NSString *)fullDescription {
    
   NSCalendar *calendar = [NSCalendar currentCalendar];
    if ([calendar isDateInToday:self]) {
        // 确定计算的时间 和当前的时间的差值
        NSTimeInterval delta = [[[NSDate alloc] init] timeIntervalSinceDate:self];
        
        if (delta < 60) {
            return @"刚刚";
        } else if (delta < 60 * 60) {
            return [NSString stringWithFormat:@"%d分钟前", (int)delta / 60];
        }
        return [NSString stringWithFormat:@"%d小时前",(int)delta / 3600];
    } else {
        // 非今天
        NSString *dateformatString = @"";
        if ([calendar isDateInYesterday:self]) {
            dateformatString = @"昨天 HH:mm";
        } else {
            // 非昨天 并且 比昨天还要早的日期
            // unitflay 比较单位
            // fromDate 表示的时需要比较的时间
            // toDate  表示 被比较的时间
            NSDateComponents *result = [calendar components:NSCalendarUnitYear fromDate:self toDate:[NSDate alloc] options:0];
            if (result.year == 0) {
                //当年 MM-dd HH:mm(一年内)
                dateformatString = @"MM-dd HH:mm";
            }else {
                //非当年 yyyy-MM-dd HH:mm(更早期)
                dateformatString = @"yyyy-MM-dd HH:mm";
            }
        }
        //统一计算所有的时间描述
        NSDateFormatter *df = [[NSDateFormatter alloc] init];
        df.dateFormat = dateformatString;
        return [df stringFromDate:self];
    }
}
@end
